home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
MiscKit1.7.1
/
MiscKit
/
Palettes
/
MiscProgressPalette
/
MiscProgressView.subproj
/
MiscProgressView.m
< prev
next >
Wrap
Text File
|
1995-04-12
|
3KB
|
170 lines
//
// MiscProgressView.m -- a simple view class for displaying progress
// Written originally by Don Yacktman Copyright (c) 1993 by James Heiser.
// Modified from an example in the NeXT documentation.
// This file is maintained by James Heiser, jheiser@adobe.com.
// Version 1.0. All rights reserved.
//
// This notice may not be removed from this source code.
//
// This object is included in the MiscKit by permission from the author
// and its use is governed by the MiscKit license, found in the file
// "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
// for a list of all applicable permissions and restrictions.
//
#import "MiscProgressView.h"
@implementation MiscProgressView
- initFrame:(const NXRect *)frameRect
{
[super initFrame:frameRect];
bg = NXConvertGrayToColor(NX_LTGRAY);
fg = NXConvertGrayToColor(NX_DKGRAY);
bd = NXConvertGrayToColor(NX_BLACK);
total = MISC_PROGRESS_MAXSIZE;
stepSize = MISC_PROGRESS_DEFAULTSTEPSIZE;
count = 0;
ratio = 0.0;
return self;
}
- renderBackground
{
NXSetColor(bg);
NXRectFill(&bounds);
return self;
}
- renderBar
{
if ((ratio > 0) && (ratio <= 1.0)) {
NXRect r = bounds;
r.size.width = bounds.size.width * ratio;
NXSetColor(fg);
NXRectFill(&r);
}
return self;
}
- renderBorder
{
NXSetColor(bd);
NXFrameRect(&bounds);
return self;
}
- drawSelf:(const NXRect *)rects :(int)rectCount
{ // Note from Don on why this -drawSelf: is split up --
// The three separate rendering methods make things a little less efficient,
// but make it a lot easier to subclass and retain parts of the original
// rendering. I wish NeXT had done something like this with the various
// control classes so that subclasses could override parts of the steps
// in the rendering process...or insert things at certain points in time.
[self renderBackground];
[self renderBar];
[self renderBorder];
return self;
}
- setStepSize:(int)value
{
stepSize = value;
return self;
}
- (int)stepSize { return stepSize; }
- (NXColor)backgroundColor { return bg; }
- (NXColor)foregroundColor { return fg; }
- (NXColor)borderColor { return bd; }
- setBackgroundColor:(NXColor)color
{
bg = color;
return self;
}
- setForegroundColor:(NXColor)color
{
fg = color;
return self;
}
- setBorderColor:(NXColor)color
{
bd = color;
return self;
}
- setRatio:(float)newRatio
{
if (newRatio > 1.0) newRatio = 1.0;
if (ratio != newRatio) {
ratio = newRatio;
[self display];
}
return self;
}
- takeIntValueFrom:sender
{
int temp = [sender intValue];
if ((temp < 0) || (temp > total)) return nil;
count = temp;
[self setRatio:(float)count/(float)total];
return self;
}
- increment:sender
{
count += stepSize;
[self setRatio:(float)count/(float)total];
return self;
}
- takeFloatValueFrom:sender
{
[self setRatio:[sender floatValue]];
count = ceil(ratio * (float)total);
return self;
}
- (const char *)getInspectorClassName
{
return "MiscProgressViewInspector";
}
- clear:sender
{
count = 0;
[self setRatio: 0];
return self;
}
- read:(NXTypedStream *)stream
{
[super read:stream];
NXReadTypes(stream, "ii", &total, &stepSize);
bg = NXReadColor(stream);
fg = NXReadColor(stream);
bd = NXReadColor(stream);
return self;
}
- write:(NXTypedStream *)stream
{
[super write:stream];
NXWriteTypes(stream, "ii", &total, &stepSize);
NXWriteColor(stream, bg);
NXWriteColor(stream, fg);
NXWriteColor(stream, bd);
return self;
}
@end